Current virtual memory operating systems (OSs) use large memory pages in order to speed up virtual-to-physical address translation and in order to make a more efficient use of the processor's translation look-aside buffer (TLB). This allows such operating systems to boost overall performance by mapping OS code and data to large physical pages. Applications running within the OS are also able to map certain regions of their virtual address space to large physical pages.
When the OS runs within a virtual machine, an extra level of indirection is added to the address translation process. This happens because when the OS running inside the virtual machine references physical memory, it essentially references an abstraction layer that needs to be further translated to the underlying physical memory on the actual hardware. This extra level of indirection causes a situation in which the OS (when running inside a virtual machine) uses large physical pages, but the extra translation causes the underlying machine physical memory to reside in sparse machine physical pages that can not be treated as a large page. The end result is that even though the OS intended to optimize address translation by using large pages, the actual address translation performed on behalf of the virtual machine will be done using small pages. This will, in turn, degrade the overall OS performance.
In this regard, there is a need for processes and systems that address the shortcomings of the prior art.